package com.fary.security.core;

import java.io.Serializable;
import java.security.Principal;
import java.util.Collection;

public interface Authentication extends Principal, Serializable {

	/**
	 * 权限结合，可使用AuthorityUtils.commaSeparatedStringToAuthorityList("admin, ROLE_ADMIN")返回字符串权限集合
	 */
	Collection<? extends GrantedAuthority> getAuthorities();

	/**
	 * 用户名密码认证时可以理解为密码
	 */
	Object getCredentials();

	/**
	 * 认证时包含的一些信息。如remoteAddress、sessionId
	 */
	Object getDetails();

	/**
	 * 用户名密码认证时可理解时用户名
	 */
	Object getPrincipal();

	/**
	 * 是否被认证，认证为true
	 */
	boolean isAuthenticated();

	/**
	 * 设置是否被认证
	 */
	void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException;
}